有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java缺少类型为Long的方法参数的URI模板变量“usuarioEntidade”

我试着在这个方法中传递一个参数

@RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long usuarioEntidade) throws ServletException { 

        Collection<Distritos> distritosBuscados = distritosService.buscarFiltro(usuarioEntidade);//parametro, que é o id_entidade, para passar na query de busca distritos
            return new ResponseEntity<>(distritosBuscados, HttpStatus.OK);
    } 

我犯了这个错误

Missing URI template variable 'usuarioEntidade' for method parameter of type Long 

我在我的前端呼叫这个请求,就在这里

 idEntidade = Number(localStorage.getItem("idEntidade"));



$http({
        method : 'GET',
        url : '/user/distrito/' +idEntidade         
    }).then(function(response) {
        $scope.distritos = response.data;

    }, function(response) {
        console.log(response.data);
        console.log(response.status);
    });
}; 

然后我犯了个错误

Missing URI template variable 'usuarioEntidade' for method parameter of type Long

共 (3) 个答案

  1. # 1 楼答案

    您必须在buscarTodosDistritos()方法中进行如下更改

    @PathVariable(value="idEntidade") Long usuarioEntidade  < - add value in path variable
    

    或者

    @PathVariable Long idEntidade   < - or change variable name to map same as the one in the url
    
  2. # 2 楼答案

    粗体参数需要有相同的名称

    @RequestMapping(method=RequestMethod.GET,value=“/distrito/{idEntidade}”,products=MediaType.APPLICATION_JSON_value) 公共响应性>;BusCartosDistritos(@PathVariable LongUsarioEntidade)引发ServletException

    正确答案

     @RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
            public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long idEntidade) throws ServletException
    
  3. # 3 楼答案

    您的问题是rest请求中path变量的名称与传递给java方法的变量的名称不匹配

    你有两个选择:

    @RequestMapping(method = RequestMethod.GET, value = "/distrito/{idEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable("idEntidade") Long usuarioEntidade)
    

    或者:

    @RequestMapping(method = RequestMethod.GET, value = "/distrito/{usuarioEntidade}", produces = MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<Collection<Distritos>> buscarTodosDistritos(@PathVariable Long usuarioEntidade)